//
// Created by jsjxsy on 2022/8/24.
//
//**上层（应用层）代码：**

//回调函数（目前还不是，将会被注册为回调）
int Add(int a, int b) {
  return (a + b);
}

//利用底层提供的API接口，进行注册回调函数
// Callback_Register(Add);
//从此以后，Add就是回调函数了，（金箍戴上之后,你就再也不是个凡人,人世间的情欲不能再沾半点。。。。。）
//========================================================================================================================
//简简单单分个层
//========================================================================================================================
//**下层（驱动层）代码:**

typedef int(*pAdd_t)(int, int);        //先构建一个函数指针类型 pAdd_t
static pAdd_t pAdd;                    //声明一个函数指针 pAdd

//这个是释放给用户注册回调用的
void Callback_Register(pAdd_t callback)    //用户注册的时候，传入回调函数名字
{
  pAdd = callback;                    //这里把回调函数赋值给函数指针，“挂钩子”
}

//底层调用
void Drive_Fun() {
  pAdd(3, 2);                        //因为之前用户已经把应用层函数注册为回调函数了，这里就通过函数指针调用到了回调函数
}

int main(void) {
  Callback_Register(Add);
  Drive_Fun();
  return 0;
}


